package com.yantong.service;

import com.yantong.utils.PageUtils;
import com.yantong.pojo.vo.*;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public interface ReportService {
	
	/**
	 * 单品销售统计
	 * @param map
	 * @param offset
	 * @param limit
	 * @return
	 * @author baolingyu
	 * @date 2018年9月17日-下午3:09:42
	 */
	PageUtils<ReportSingleSaleVo> reportSingleSale(HashMap<String, Object> map, int offset, int limit);
	
	/**
	 * 商品销售明细
	 * 
	 * @return
	 * @author baolingyu
	 * @date 2018年9月15日-上午9:58:32
	 */
	PageUtils<ReportProductSaleVo> reportProductSale(HashMap<String, Object> map, int offset, int limit);
	List<ReportProductSaleVo> reportProductSale(HashMap<String, Object> map);
	
	/**
	 * 商品销量统计列表
	 * 
	 * @param map
	 * @param offset
	 * @param limit
	 * @return
	 * @author baolingyu
	 * @date 2018年9月16日-下午4:04:12
	 */
	PageUtils<ReportProductSaleListVo> reportProductSaleList(HashMap<String, Object> map, int offset, int limit);
	List<ReportProductSaleListVo> reportProductSaleList(HashMap<String, Object> map);
	Map<String,Object> countProductSale(HashMap<String, Object> map, int offset, int limit);
	Map<String,Object> countTotalProductbaseSale(HashMap<String, Object> map);

	/**
	 * 门店销量统计报表
	 *
	 * @param map
	 * @param offset
	 * @param limit
	 * @return
	 * @author baolingyu
	 * @date 2018年9月16日-下午6:30:33
	 */
	PageUtils<ReportMemberSaleVo> reportMemberSale(HashMap<String, Object> map, int offset, int limit);
	List<ReportMemberSaleVo> reportMemberSale(HashMap<String, Object> map);


	/**
	 * 门店退货统计报表
	 *
	 * @param map
	 * @param offset
	 * @param limit
	 * @return
	 * @author baolingyu
	 * @date 2018年9月16日-下午9:49:49
	 */
	PageUtils<ReportMemberRefundVo> reportMemberRefund(HashMap<String, Object> map, int offset, int limit);
//	List<ReportMemberRefundVo> reportMemberRefund(HashMap<String, Object> map);

	/**
	 * 门店团队业绩统计
	 * @param params
	 * @param offset
	 * @param limit
     * @return
     */
	PageUtils<ReportTmAchieveVo> tmAchieve(Map<String, Object> params, int offset, int limit);

	/**
	 * 门店团队业绩 不分页
	 * @param params
	 * @return
	 */
	List<ReportTmAchieveVo> tmAchieve(Map<String, Object> params);

	Long productsaleZj(HashMap<String, Object> params);

	/**
	 * 商品库商品销售情况统计
	 * @param map
	 * @param offset
	 * @param limit
	 * @return
	 * @author baolingyu
	 * @date 2018年11月20日-下午3:12:12
	 */
	PageUtils<ReportProductSaleListVo> reportProductbaseSale(HashMap<String, Object> map, int offset, int limit);

    /**
     * 导出商品库商品销量情况统计
     */
    List<ReportProductSaleListVo> reportProductbaseSale(HashMap<String, Object> map);

	/**
	 * 商品库销量统计详情
	 * @param map
	 * @return
	 */
	List<ReportTmAchieveVo> reportProductSaleDetail(HashMap<String, Object> map);

	/**
	 * 前端商户得到商品销量信息
	 * @param map
	 * @param offset
	 * @param limit
	 * @return
	 */
	List<ReportProductSaleListVo> getReportProductSaleList(HashMap<String, Object> map, int offset,
                                                           int limit);

	/**
	 * 前端用商户商品销量总金额
	 * @param map
	 * @param rowBounds
	 * @return
	 */
	ReportProductSaleListVo getReportProductSaleTotal(HashMap<String, Object> map);

	PageUtils<ReportTmBillVo> tmBill(Map<String, Object> params, int offset, int limit);

	public List<ReportTmBillVo> getAllBillList(Map<String, Object> params);
}
